import router from '@/router/index';

export default{

  /**
   * 把查询出来的菜单列表全局保存起来
   * @param state
   * @param obj
   */
  setMenuList(state,obj){
    state.menuList = [...obj];
  },
  /**
   *  跳转路由页面
   * @param state
   * @param obj {url:所需跳转的页面，name:跳转页面Tag展示的名称}
   */
  changeCurrentView(state,obj){
    //修改当前url
    state.currentView = obj.url
    //跳转到知道URL
    router.push(obj.url)
    //保存所需要的参数
    if(obj && obj.parame){
      state.routerParame = obj.parame;
    }else{
      state.routerParame = null;
    }
    //添加tag 根据URL判断，是否存在，存在则不添加，不存在则添加Tag
    if(state.tagList && obj.url && obj.title){
      var isExist = false;
      for(var i = 0;i<state.tagList.length;i++){
        if(state.tagList[i].url == obj.url){
          isExist = true;
          state.clickIndex = i;
          break;
        }
      }
      if(!isExist){
          var tagl = state.tagList.push(obj);
          state.clickIndex = tagl - 1;
          //添加缓存
          var u = obj.url.split('/');
          if(u && u.length > 0){
            state.cacheViews.push(u[u.length -1]);
          }
      }
    }
  },
  /**
   *  删除tag
   * @param name
   */
  removeTag(state,index){
    if(state.tagList.length == 1){
      return;
    }
    if(index){
      var obj = state.tagList[Number(index)];
      //删除缓存
      for(var i = 0;i<state.cacheViews.length;i++){
        if(obj.url){
          var urls = obj.url.split("/");
          if(state.cacheViews[i] == urls[urls.length-1]){
            state.cacheViews.splice(i,1);
          }
        }
      }

      state.tagList.splice(Number(index),1);
      //删除选中
      if(state.clickIndex == index){
        if(state.tagList.length >= Number(index)+1){
          state.clickIndex = Number(index);
          state.currentView = state.tagList[Number(index)].url;
          router.push(state.tagList[Number(index)].url)
        }else{
          state.clickIndex = index - 1;
          state.currentView = state.tagList[Number(index)-1].url;
          router.push(state.tagList[Number(index)-1].url)
        }
      }else{
      //删除未选中
        if(state.clickIndex > index){
          state.clickIndex = state.clickIndex -1;
        }
      }
    }


  },
  /**
   * 点击回调
   * @param item
   * @param index
   */
  clickTag(state,item){
    state.clickIndex = item.index;
    state.currentView = item.url;
    router.push(item.url)
  },
  /**
   * 新增Tag
   * @param obj
   */
  addTag(state,obj){
    if(!obj.url && !obj.title){
      console.info("传递子组件参数信息：{name : '',title : ''}");
      return;
    }
    var tagl = state.tagList.push(obj);
    state.clickIndex = tagl - 1;
  },
  /**
   * 当路由改变页面时
   * @param state
   * @param path
   */
  routerChangePage(state,path){
    //设置当前菜单的名称（url）
    state.currentView = path;
    //设置tags选中的一个，
    var tags = state.tagList;
    for(var i = 0;i<tags.length;i++){
      if(tags[i] && tags[i].url && tags[i].url == path){
        state.clickIndex = i;
        return;
      }
    }
    //如果没有，则创建一个。
    var tagName;

    var itemMenu = null;
    var itemMenus = [...state.menuList];
    while(itemMenus.length > 0){
      itemMenu = itemMenus.pop();
      //如果存在则获取菜单名称关闭循环
      if(itemMenu.menuHref && itemMenu.menuHref == path){
        tagName = itemMenu.menuName;
      }else{
        //不存在则查看有没有子菜单，有则把子菜单放入循环列表。
        if(itemMenu.children && itemMenu.children.length > 0){
          itemMenus = itemMenus.concat(itemMenu.children)
        }
      }
    }

    if(tagName){
      var obj = {url:path,title:tagName}
      var tagl = state.tagList.push(obj);
      state.clickIndex = tagl - 1;
      //添加缓存
      var u = obj.url.split('/');
      if(u && u.length > 0){
        state.cacheViews.push(u[u.length -1]);
      }
    }
  },
  /**
   * 设置全局的数据字典
   * @param state
   * @param data
   */
  settingDictData(state,data){
    if(data.dictArray){
      state.dictArray = data.dictArray;
    }
    if(data.dictObject){
      state.dictObject = data.dictObject;
    }
  },

  logOut(state,obj) {
    state.currentView = '/main/welcome';
    state.routerParame = null;
    state.menuList = [];
    state.tagList = [
      {
        url : '/main/welcome',
        title : '首页',
      },
    ];
    this.cacheViews = [];
    this.clickIndex = 0;
    this.currentTabName = '';
  },

  /**
   * 设置当前用户
   * @param state
   * @param obj
   */
  setCurrentUser(state,obj){
    state.currentUser = obj;
  }

}
